<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<!-- DW6 -->
<head>
<!-- Copyright 2005 Macromedia, Inc. All rights reserved. -->
<title>Text</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="../mm_health_nutr.css" type="text/css">
<script language="javascript">
//--------------- LOCALIZEABLE GLOBALS ---------------
var d=new Date();
var monthname=new Array("January","February","March","April","May","June","July","August","September","October","November","December");
//Ensure correct for language. English is "January 1, 2004"
var TODAY = monthname[d.getMonth()] + " " + d.getDate() + ", " + d.getFullYear();
//---------------   END LOCALIZEABLE   ---------------
</script>
</head>
<body bgcolor="#F4FFE4">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr bgcolor="#D5EDB3">
    <td colspan="2" rowspan="2">&nbsp;</td>
    <td width="494" height="50" id="logo" valign="bottom" align="center" nowrap>Bloques</td>
    <td width="103">&nbsp;</td>
  </tr>

  <tr bgcolor="#D5EDB3">
    <td height="19" id="tagline" valign="top" align="center">Grupo 15</td>
	<td width="103">&nbsp;</td>
  </tr>

  <tr>
    <td colspan="4" bgcolor="#5C743D"><img src="mm_spacer.gif" alt="" width="1" height="2" border="0"></td>
  </tr>

  <tr>
    <td colspan="4" bgcolor="#99CC66" background="mm_dashed_line.gif"><img src="mm_dashed_line.gif" alt="line decor" width="4" height="3" border="0"></td>
  </tr>

  <tr bgcolor="#99CC66">
  <td>&nbsp;</td>
  	<td colspan="3" id="dateformat" height="20"><a href="../index.html">INDICE</a>&nbsp;&nbsp;::&nbsp;&nbsp;<a href="../arquitectura.html#juegos">JUEGOS</a>::&nbsp;&nbsp;<script language="javascript">
      document.write(TODAY);	</script>	</td>
  </tr>

  <tr>
    <td colspan="4" bgcolor="#99CC66" background="mm_dashed_line.gif"><img src="mm_dashed_line.gif" alt="line decor" width="4" height="3" border="0"></td>
  </tr>

  <tr>
    <td colspan="4" bgcolor="#5C743D"><img src="mm_spacer.gif" alt="" width="1" height="2" border="0"></td>
  </tr>
 <tr>
    <td width="40">&nbsp;</td>
    <td colspan="2" valign="top">&nbsp;<br>
    &nbsp;<br>
    <table border="0" cellspacing="0" cellpadding="2" width="802">
        <tr>
          <td width="798" class="pageName">Bloques</td>
        </tr>
        <tr>
          <td class="bodyText">
			<ul>
				<li><font size="3">Descripción del juego:</font></li>
			</ul>
			<p align="justify">Disponemos de 3 bloques situados sobre una mesa, 
			el bloque C esta sobre el bloque A y el bloque B esta sobre la mesa.</p>
			<p align="center"><img border="0" src="images/bloque3.gif"></p>
			<p align="justify">El objetivo consiste en utilizar los operadores 
			para conseguir el estado final, teniendo como operadores los 
			movimientos de un bloque sobre otro o sobre la mesa.</p>
			<p align="center"><img border="0" src="images/bloque22.gif"></p>
			<p align="justify">El estado se representa mediante una tupla de 3 
			elementos donde cada posición representa una posición. Por defecto, 
			la ultima posición representa la mesa o repositorio donde se sitúan 
			el resto de elementos.</p>
		  <ul>
				<li>
				<p align="justify"><font size="3">Heurística:</font></p></li>
			</ul>
			<p align="justify">El objetivo del juego consiste en conseguir que 
			dos de los bloques (B y C) estén superpuestos en orden alfabético siendo el 
			bloque B el que este en la cima, por lo que su medida heurística 
			consiste en sumar los bloques que estén situados en una posición 
			incorrecta. Cuanto mayor sea este valor más alejado estará el 
			objetivo, por lo que minimizando esta medida heurística se acercaría la solución del problema.</p>
			<p align="center">h&#39;(x) = Número de bloques mal colocados.</p>
			<ul>
				<li>
				<p align="justify"><font size="3">Operadores</font></p></li>
			</ul>
			<p align="justify">Los operadores se aplican sólo si cumplen sus 
			precondiciones. </p>
			<ol>
				<li>
				<p align="justify">Mover el bloque A sobre B: Ni el bloque A ni 
				el bloque B deben tener ningún bloque encima.</p></li>
				<li>
				<p align="justify">Mover el bloque A sobre C: Ni el bloque A ni 
				el bloque C deben tener ningún bloque encima.</p></li>
				<li>
				<p align="justify">Mover el bloque B sobre A: Ni el bloque B ni 
				el bloque A deben tener ningún bloque encima.</p></li>
				<li>
				<p align="justify">Mover el bloque B sobre C: Ni el bloque B ni 
				el bloque C deben tener ningún bloque encima.</p></li>
				<li>
				<p align="justify">Mover el bloque C sobre A: Ni el bloque C ni 
				el bloque A deben tener ningún bloque encima.</p></li>
				<li>
				<p align="justify">Mover el bloque C sobre B: Ni el bloque C ni 
				el bloque B deben tener ningún bloque encima.</p></li>
				<li>
				<p align="justify">Mover el bloque A sobre la mesa: El bloque A 
				no puede tener ningún bloque encima</p></li>
				<li>
				<p align="justify">Mover el bloque B sobre la mesa: El bloque B 
				no puede tener ningún bloque encima</p></li>
				<li>
				<p align="justify">Mover el bloque C sobre la mesa: El bloque C 
				no puede tener ningún bloque encima</p></li>
			</ol>
			<ul>
				<li>
				<p align="justify"><font size="3">Algoritmo</font></p></li>
			</ul>
			<p align="justify">Algoritmo DepthFirstSearch o Primero en 
			profundidad: Técnica que visita un sucesor del nodo actual en cada 
			paso, si éste no tiene sucesores se realiza Backtracking, La 
			implementación se realiza como si se tratase de una pila. </p>
			<p align="justify">Aunque existe una heurística valida, se&nbsp; 
			utiliza un algoritmo de búsqueda ciega con el fin de aumentar la 
			variedad de algoritmos, y aún siendo una búsqueda desinformada, 
			debido al orden de generación de nodos, genera pocos nodos para la 
			obtención de una solución.</p>
			<p align="center"><img border="0" src="images/bloque2.jpg"></p>
		  <ul>
				<li>
				<p align="justify"><font size="3">Espacio de estados</font></p>
				</li>
		    </ul>
			<p align="justify">Estado ( Posición 0, Posición 1, Posición 2 )<br>
			&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Posición 0 = { Bloque A, Bloque B, 
			Bloque C }<br>
			&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Posición 1 = { Bloque A, Bloque B, Bloque C }<br>
			&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Posición 2 = { Mesa }<br><p align="justify">
			Se implementa el juego con la representación de estados con la 
			intención de que ser versátil a futuras ampliaciones del juego, así 
			como de ser consientes en todo momento de los elementos que se están 
			utilizando.<p align="justify">Estados inalcanzables:<br>
			&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Estado( Bloque A, Bloque A, Mesa)<br>
			&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Estado( Bloque B, Bloque B, Mesa)<br>
			&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Estado( Bloque C, Bloque C, Mesa)<p align="justify">Estado inicial:<br>
			&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Estado( Bloque C, Bloque A, Mesa )
			
			<p align="justify">Estado final:<br>
			&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Estado( Bloque C, Bloque B, Mesa )</td>
		</tr>
        <tr>
          <td class="bodyText"><span class="pageName">Diagrama UML</span></td>
        </tr>
        <tr>
          <td class="bodyText"><p>A continuacion se expone el diagrama uml de este juego para aportar informacion adicional sobre su implementacion.</p>
          <p align="center"><img src="images/Bloques.jpg" alt="UML Bloques" width="700" height="700"></p></td>
        </tr>
      </table>
  </tr>

 <tr>
    <td width="40">&nbsp;</td>
    <td width="110">&nbsp;</td>
    <td width="494">&nbsp;</td>
	<td width="103">&nbsp;</td>
  </tr>
</table>
</body>
</html>
